/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Hola;

/**
 *
 * @author invitado
 */
import javax.microedition.lcdui.List;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.RecordStoreNotOpenException;

/**
 * Clase que representa la persistencia de la aplicacion.
 */
public class Persistencia 
{
        //---------------------------------------------
        //ATRIBUTOS 
        //---------------------------------------------
        
        /**
         * Atributo de tipo RecordStore para poder manejar archivos.
         */
        private RecordStore rs;
        
        //----------------------
        //CONSTRUCTOR
        //----------------------
        
        /**
         * Método que construye una nueva persistencia
         */
        public Persistencia()
        {
                
        }
        
        //----------------------
        //METODOS
        //----------------------
        
        /**
         * Metodo para crear un archivo, donde se guardaran registros.
         * @param nombre Nombre del archivo.
         */
        public void abrirRecordStore(String nombre)
        {
                try
                {
                        rs = RecordStore.openRecordStore(nombre,true);
                        System.out.println("Se abrio correctamente el Record Store");
                }
                        catch (RecordStoreException e)
                {
                        System.out.println("Error al abrir el Record Store");
                }
        }
        
        /**
         * Metodo para escribir los datos.
         * @param cad Texto a guardar.
         */
        public void escribirDatos(String cad)
        {
                escribirRegistro(cad);
                System.out.println("Se escribieron correctamente los datos");
        }
        
        /**
         * Metodo para escribir datos en un registro.
         * @param entrada Texto que se desea guardar.
         */
        public void escribirRegistro(String entrada)
        {
                byte[] registro;
                registro = entrada.getBytes();
                try
                {
                        rs.addRecord(registro,0,registro.length);
                        
                }
                catch (RecordStoreException e)
                {
                        System.out.println("Error al insertar registro");
                }
        }
        
        /**
         * Metodo para leer todos los registros.
         */
        public void leerRegistros()
        {
                byte[] registro = new byte[75];
                int longitud;
                try
                {
                        for (int i=1;i<=rs.getNumRecords();i++)
                        {
                                longitud = rs.getRecordSize(i);
                                registro = rs.getRecord(i);
                                System.out.println("Registro "+i+":" + new String(registro,0,longitud));
                        }
                }
                catch (RecordStoreException e)
                {
                        System.out.println("Error al leer los registros");
                }
                registro = null;
        }
        
        /**
         * Metodo para leer un registro especifico.
         * @return El texto que contiene el registro.
         */
        public String leerRegistro(int i){
                byte[] registro = new byte[75];
                int longitud;
                String dato = "";
                try{
                
                longitud = rs.getRecordSize(i);
                registro = rs.getRecord(i);
                dato = new String(registro,0,longitud);
                }
                catch (RecordStoreException e){
                System.out.println("Error al leer los registros");
                }
                registro = null;
                return dato;
                }
        
        /**
         * Metodo para obtener el numero de registros del archivo.
         * @return Cantidad de registros del archivo.
         */
        public int darNumRegistros()
        {
                int num = 0;
                try{
                        System.out.println(String.valueOf(rs.getNumRecords()));
                        num = rs.getNumRecords();
                }
                catch (RecordStoreException e)
                        {
                                System.out.println("No se puede dar el num de registros");
                        }
                return num;
        }
        
        /**
         * Metodo para cerrar el RecordStore.
        */
        public void cerrarRecordStore()
        {
                try
                {
                        rs.closeRecordStore();
                        System.out.println("Se cerro correctamente el Record Store");
                }
                catch (RecordStoreException e)
                {
                        System.out.println("Error al cerrar el Record Store");
                }
        }
        
        /**
         * Metodo para borrar un RecordStore.
         * @param nombre Nombre del RecordStore a borrar.
         * @return Mensaje que indica el resultado del proceso.
         */
        public String destruirRecordStore(String nombre)
        {
                String mensaje = "";
                try
                {
                        RecordStore.deleteRecordStore(nombre);
                        mensaje = ("Se elimino correctamente el Record Store");
                }
                catch (RecordStoreException e)
                {
                        mensaje = ("Error al eliminar el Record Store");
                }
                return mensaje;
        }
}